package linklist;

/**
 * @author "随风Coding"          // 系统用户名（自动填充）
 * @email 1431471764@qq.com  // 替换为你的邮箱（固定或自定义变量）
 * @date 2025/8/13 07:02    // 创建日期和时间（自动填充）
 */
public class DoubleSwap {


    public static ListNode swapNode(ListNode head) {
        ListNode dummy = new ListNode();
        dummy.next = head;
        ListNode cur = dummy;
        //循环end ：cur.next==null cur.next.next==null
        while (cur.next != null && cur.next.next != null) {
            //保存后一和后三
            ListNode temp = cur.next;
            ListNode temp1 = cur.next.next.next;
            //1.cur -> 2
            cur.next = cur.next.next;
            //2.2 -> 1
            cur.next.next = temp;
            //3.1 - >3
            temp.next = temp1;
            //最后在移动cur 移动cur = cur.next.next
            cur = cur.next.next;
        }
        //head 为 虚拟头节点后一个
        return dummy.next;
    }
}
